Distance determinations associated with a trellis decoder

ABSTRACT

According to some embodiments, distances associated with a Trellis decoder are determined.

BACKGROUND

A modem can be used to exchange information through a communicationnetwork. Moreover, the modem may include a data pump to facilitate theexchange of information in accordance with a particular protocol. Forexample, the data pump might be adapted to receive and transmit dataover a telephone wire in accordance with a Digital Subscriber Line (DSL)protocol.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an X-Y axis and a constellation pattern.

FIG. 2 illustrates another example of an X-Y axis and a constellationpattern.

FIG. 3 illustrates a received location and pre-determined constellationpoints.

FIG. 4 is a method of calculating a difference according to someembodiments.

FIG. 5 illustrates a coordinate value according to some embodiments.

FIG. 6 is a block diagram of a circuit according to some embodiments.

FIG. 7 is a method of calculating differences according to someembodiments.

FIG. 8 is a method of estimating a distance according to someembodiments.

FIG. 9 is a block diagram of a circuit according to some embodiments.

FIG. 10 is a method of estimating a distance according to someembodiments.

FIG. 11 is a block diagram of a modem according to some embodiments.

FIG. 12 is a block diagram of a digital subscriber line accessmultiplexer according to some embodiments.

DETAILED DESCRIPTION

Some embodiments of the present invention are associated with theexchange of data through a channel (e.g., a telephone wire). To increasethe rate at which information can be exchanged, the channel's bandwidthmay be divided into a number of subchannels (and data can besimultaneously transmitted via each subchannel). For example, 1.1MegaHertz (MHz) of available bandwidth could be divided into 256separate subchannels, also referred to as “tones”, each tone having abandwidth of 4 KiloHertz (KHz).

To further improve performance, phase and amplitude modulation may beused to increase the amount of information that can be simultaneouslytransmitted using a particular tone. For example, a phase value canrepresent an angle and an amplitude value can represent a distance asillustrated by the X-Y axis 100 in FIG. 1. In this case, referred to asQuadrature Phase Shift Keying (QPSK), different phase and amplitudecombinations will represent different points on the axis 100, and eachpoint can be associated with a particular combination of bits (e.g.,“10” or “11”). Such an approach is referred to as “constellation”mapping.

Although four constellation points are illustrated in FIG. 1, othernumbers of points may be defined. For example, FIG. 2 illustratessixteen constellation points 200 in accordance with Quadrature AmplitudeModulation (QAM). Similarly, QAM-64 provides sixty-four constellationpoints (and up to six bits of data might be associated with eachconstellation point).

When a signal is received (e.g., at a modem), noise and other factorsassociated with the signal may prevent the location of received signalon an X-Y axis from exactly matching the intended constellation point.That is, a large enough error in the phase or angle information maycause an incorrect point in the constellation to be interpreted(resulting in an error in the exchanged data). To address this problem,Trellis Coded Modulation (TCM) combines coding and error correctiontechniques by adding additional bits that can be used to determine whatdata that was actually transmitted. In one approach, two tones arepaired and Trellis encoding/decoding is performed on the pair of tones.Examples of this approach include the International TelecommunicationUnion (ITU) Recommendation G.992.1 entitled “Asymmetrical DigitalSubscriber Line (ADSL) Transceivers” (1999), Recommendation G.992.2entitled “Splitterless Asymmetric Digital Subscriber Line (ADSL)Transceivers” (1999), and ITU Recommendation G.992.3 entitled“Asymmetrical Digital Subscriber Line (ADSL) Transceivers-2 (ADSL2)”(2002).

FIG. 3 illustrates an X-Y axis 300 for a particular tone along with areceived location R as defined by (X_(R), Y_(R)). Also illustrated arefour pre-determined constellation points A, B, C, and D as defined by(X_(A), Y_(A)) through (X_(D), Y_(D)).

Note that the location R does not exactly map to any of theconstellation points.

A determination as to which constellation point is represented by R maybe based on information associated with the distances between R and eachconstellation point: D_(A) (the distance between location R andconstellation point A), D_(B), D_(C), and D_(D).

In particular, a Trellis operation may be associated with the squares ofthese Euclidean distances as defined by the Pythagorean Theorem:D _(A) ²=(X _(R) −X _(A))²+(Y _(R) −Y _(A))²D _(B) ²=(X _(R) −X _(B))²+(Y _(R) −Y _(B))²D _(C) ²=(X _(R) −X _(C))²+(Y _(R) −Y _(C))²D _(D) ²=(X _(R) −X _(D))²+(Y _(R) −Y _(D))²Thus, a number of differences (e.g., X_(R)−X_(A)) may be calculatedduring the Trellis operation.

Difference Calculations

As can be seen in FIG. 3, some of the differences associated with thereceived location R and the constellation points may be equal. Inparticular:(X_(R)−X_(A)) may equal (X_(R)−X_(B));(X_(R)−X_(C)) may equal (X_(R)−X_(D));(Y_(R)−Y_(A)) may equal (Y_(R)−Y_(C)); and(Y_(R)−Y_(B)) may equal (Y_(R)−Y_(D)).In accordance with some embodiments, the pre-determined constellationpoints A, B, C, and D are located at each (and every) odd axis value.

FIG. 4 is a flow chart of a method according to some embodiments. Theflow charts described herein do not necessarily imply a fixed order tothe actions, and embodiments may be performed in any order that ispracticable. Note that any of the methods described herein may beperformed by firmware, hardware, software, or any combination of thesetechniques. For example, a storage medium may store thereon instructionsthat when executed by a machine result in performance according to anyof the embodiments described herein.

At 402, a coordinate value associated with a Trellis decoder isreceived. The coordinate value may be, for example, X_(R) or Y_(R).Moreover, the received coordinate value includes an integer portion anda fractional portion. For example, FIG. 5 illustrates a receivedcoordinate value 500 in floating point format according to someembodiments. In this case, the sixteen-bit coordinate value 500 includesan integer portion (bits b₁₅ through b₇) and a fractional portion (bitsb₆ through b₀).

Referring again to FIG. 4, the Least Significant Bit (LSB) of theinteger portion (e.g., bit b₇) may be evaluated at 404. For example, theLSB may be evaluated to determine whether it is a zero or a one.

At 406, a difference between the received coordinate value and apre-determined coordinate value is calculated based on the fractionalportion and the evaluation. (e.g., without adding or subtracting theinteger portion of the received coordinate value).

Consider, for example, the case when the received coordinate value isX_(R). When the LSB of the integer portion is zero (and thus the integerportion is an even number), then:(X _(R) −X _(A))=(X _(R) −X _(B))=one plus the fractional portion; and(X _(R) −X _(C))=(X _(R) −X _(D))=one minus the fractional portion(because the pre-determined constellation points A, B, C, D are locatedat each and every odd X-axis value). On the other hand, when the LSB ofthe integer portion is one (and the integer portion is an odd number):(X _(R) −X _(A))=(X _(R) −X _(B))=the fractional portion; and(X _(R) −X _(C))=(X _(R) −X _(D))=two minus the fractional portion.

Now consider the case when the received coordinate value is Y_(R). Whenthe LSB of the integer portion is zero (and the integer portion is aneven number), then:(Y _(R) −Y _(A))=(Y _(R) −Y _(C))=one minus the fractional portion; and(Y _(R) −Y _(B))=(Y _(R) −Y _(D))=one plus the fractional portion.On the other hand, when the LSB of the integer portion is one (and theinteger portion is an odd number):(Y _(R) −Y _(A))=(Y _(R) −Y _(C))=two minus the fractional portion; and(Y _(R) −Y _(B))=(Y _(R) −Y _(D))=the fractional portion.

Once the differences have been determined, distance values associatedwith distances between a received coordinate location (e.g., R) and oneor more pre-determined constellation points (e.g., A, B, C, and D) maybe calculated based at least in part on these differences (e.g., D_(A)²=(X_(R)−X_(A))²+(Y_(R)−Y_(A))²). A Trellis decoding process may then beperformed based at least in part on the distance values.

Difference Calculation Example

FIG. 6 is a block diagram of a circuit 600 according to someembodiments. In particular, the circuit 600 outputs (X_(R)−X_(A)) and(X_(R)−X_(B)) based on the LSB of the integer portion and the fractionalportion of X_(R). An adder 610 receives a signal representing one(“1.0”) along with the fractional portion of X_(R). The adder 610outputs one plus the fractional portion to a multiplexer 620. Themultiplexer 620 also directly receives the fractional portion of X_(R)along with the LSB of the integer portion as a control signal.

When the LSB of the integer portion of X_(R) equals zero, themultiplexer 620 outputs one plus the fractional portion of X_(R). Whenthe LSB of the integer portion equals one, the multiplexer 620 outputsthe fractional portion of X_(R). In this way, the circuit 600 generates(X_(R)−X_(A)) and (X_(R)−X_(B)).

Although a particular circuit 600 has been illustrated, any number ofother circuits could be used to generate (X_(R)−X_(A)) and(X_(R)−X_(B)). For example, an adder might receive the fractionalportion of X_(R) as one input along with an inverted version of the LSBof the integer portion of X_(R) as another input. In this case, theoutput of the adder would also represent (X_(R)−X_(A)) and(X_(R)−X_(B)).

Note that the circuit 600 of FIG. 6 may also be used to generate(Y_(R)−Y_(B)) and (Y_(R)−Y_(D)). That is, the multiplexer 620 wouldoutput one plus the fractional portion of Y_(R) when the LSB of theinteger portion of Y_(R) equals zero. When the LSB of the integerportion of Y_(R) equals one, the multiplexer 620 would output thefractional portion of Y_(R).

Moreover, a similar circuit could be used to generate (X_(R)−X_(C)),(X_(R)−X_(D)), (Y_(R)−Y_(A)), and (Y_(R)−Y_(C)). In this case, however,a multiplexer might receive one minus the fractional portion and twominus the fractional portion as inputs.

The constellation mapping, tone pairing, Trellis operations, and/orother functions described herein might be provided, for example, via aField-Programmable Gate Array (FPGA) device or an Application SpecificIntegrated Circuit (ASIC) device. By using some or all of theembodiments described herein to calculate differences between coordinatevalues, the area and cost of such hardware might be reduced.

FIG. 7 is a method of calculating differences according to someembodiments. At 702, an integer portion and a fractional portion ofX_(R) are received. If the LSB of the integer portion equals zero at 704(the integer portion is an even number), the following differences arecalculated at 706 and 708:(X _(R) −X _(A))=(X _(R) −X _(B))=one plus the fractional portion; and(X _(R) −X _(C))=(X _(R) −X _(D))=one minus the fractional portion

If the LSB of the integer portion equals one at 704 (the integer portionis an odd number), the following differences are calculated at 710 and712:(X _(R) −X _(A))=(X _(R) −X _(B))=the fractional portion; and(X _(R) −X _(C))=(X _(R) −X _(D))=two minus the fractional portion.

Distance Estimation

When the appropriate differences have been determined, the distancesbetween a received location R and pre-determined constellation points A,B, C, and D may be calculated as follows:D _(A)={square root}{square root over ((X _(R) −X _(A))²+(Y _(R) −Y_(A))²)}D _(B)={square root}{square root over ((X _(R) −X _(B))²+(Y _(R) −Y_(B))²)}D _(C)={square root}{square root over ((X _(R) −X _(C))²+(Y _(R) −Y_(C))²)}D _(D)={square root}{square root over ((X _(R) −X _(D))²+(Y _(R) −Y_(D))²)}The calculation of a square root value, however, can be a hardwareintensive task. For example, iterative approaches may be difficult toimplement in hardware.

FIG. 8 is a method of estimating a distance according to someembodiments. At 802, X and Y values are received representingdifferences between a received location and a pre-determinedconstellation point associated with a Trellis decoder. For example, Xmight represent (X_(R)−X_(A)) while Y represents (Y_(R)−Y_(A)).

At 804, a distance between the received location and the pre-determinedconstellation point is estimated based on one of the X and Y values. Forexample, according to some embodiments, a modified Taylor series is usedto estimate the distance. In particular, when X is greater than Y, thedistance may be estimated as the X value multiplied by a pre-determinedvalue. When Y is greater than X, the distance may be estimated as the Yvalue multiplied by the pre-determined value.

Distance Estimation Example

FIG. 9 is a block diagram of a circuit 900 according to someembodiments. A multiplexer 910 receives the X and Y values (e.g.,representing differences between a received location and apre-determined constellation point). The X and Y values are alsoprovided to a comparator 920 that controls the multiplexer 910 such thatthe output of the multiplexer 910 will be the larger of the X and Yvalues.

The output of the multiplexer 910 is provided to a data shifter 930 thatshifts the value left by eight bits (e.g., multiplying the value by256). The output of the multiplexer 910 is also provided to a multiplier940 that multiplies the value by a pre-determined constant alpha (e.g.,87). The constant alpha may be, for example, obtained empirically duringthe design, testing, and/or operation of the circuit 900.

An adder 950 receives signals from the data shifter 930 and themultiplier 940 and provides a signal to another data shifter 960 wherethe value is shifted right by eight bits (e.g., dividing the value by256). The result may then be used as an estimation of the distancedefined by defined by the X and Y values (e.g., the distance from areceived location to a pre-determined constellation point).

FIG. 10 is a method of estimating a distance according to someembodiments. At 1002, X and Y values are received (e.g., representingdifferences between a received location and a pre-determinedconstellation point). If X is greater than Y at 1004, then the X valueis shifted left by eight bits at 1006. The X value is also multiplied byalpha at 1008 and the two results are added at 1010. The new value isshifted right by eight bits at 1012 and an estimated distance is outputat 1014.

If Y is greater than X at 1004, then the Y value is shifted left byeight bits at 1016. The Y value is also multiplied by alpha at 1018 andthe two results are added at 1020. The new value is shifted right byeight bits at 1022 and an estimated distance is output at 1014. As aresult, the distance may be estimated without calculating a square rootvalue (e.g., to allow for a more efficient hardware implementation).Although some error may be introduced during the process, the error maybe limited based on values selected (e.g., a particular amount of bitshifting and a particular alpha might result in a 6% error).

Systems

FIG. 11 is a block diagram of a modem 1100, such as an Intel® PRO/DSL3200 modem, according to some embodiments. The modem may, for example,exchange information between a Personal Computer (PC) and a remotedevice (e.g., via line Tx and line Rx). The modem 1100 includes an ADSLdata pump 1110 in accordance with any of the embodiments describedherein. For example, the data pump 1110 may include an input path toreceive a coordinate value, the received coordinate value including aninteger portion and a fractional portion. Moreover, the data pump 1110may include a multiplexer to receive (i) the fractional portion, (ii) athe fractional portion plus one, and (iii) the least significant bit ofthe integer portion as a control signal. The modem 1100 may also includean Ethernet interface 1120 (e.g., to exchange information with the PC).According to other embodiments the modem 1100 includes a UniversalSerial Bus (USB) interface instead of, or in addition to, the Ethernetinterface 1120.

FIG. 12 is a block diagram of a Digital Subscriber Line AccessMultiplexer (DSLAM) 1200 according to some embodiments. The DSLAM 1200may be located at, for example, a telephone company central office. TheDSLAM 1200 includes a bank of modems 1210 that exchange information withmultiple remote devices (e.g., subscriber modems). One or more of themodems 1210 may include an ADSL data pump 1220 in accordance with any ofthe embodiments described herein. For example, the data pump 1220 mayinclude an input path to receive a coordinate value, the receivedcoordinate value including an integer portion and a fractional portion.Moreover, the data pump 1220 may include a multiplexer to receive (i)the fractional portion, (ii) a the fractional portion plus one, and(iii) the least significant bit of the integer portion as a controlsignal. The DSLAM 1200 may also include an Asynchronous Transfer Mode(ATM) interface 1230 (e.g., to exchange information with an Internetservice provider). According to other embodiments the DSLAM 1200includes an interface to another high-speed back bone instead of, or inaddition to, the ATM interface 1230.

ADDITIONAL EMBODIMENTS

The following illustrates various additional embodiments. These do notconstitute a definition of all possible embodiments, and those skilledin the art will understand that many other embodiments are possible.Further, although the following embodiments are briefly described forclarity, those skilled in the art will understand how to make anychanges, if necessary, to the above description to accommodate these andother embodiments and applications.

For example, although particular ASDL standards are referred to herein,embodiments of the present invention can be used with respect to otherstandards and/or situations in which differences and/or distances arecalculated. Similarly, although particular circuits have been described,embodiments may be implemented using different circuit designs.

The several embodiments described herein are solely for the purpose ofillustration. Persons skilled in the art will recognize from thisdescription other embodiments may be practiced with modifications andalterations limited only by the claims.

1. A method, comprising: receiving a coordinate value associated with aTrellis decoder, the received coordinate value including an integerportion and a fractional portion; evaluating the least significant bitof the integer portion; and calculating a difference between thereceived coordinate value and a pre-determined coordinate value based onthe fractional portion and said evaluation.
 2. The method of claim 1,wherein the received coordinate value comprises one of an X axis valueand a Y axis value.
 3. The method of claim 1, wherein said evaluationcomprises determining whether the least significant bit of the integerportion is a zero or a one.
 4. The method of claim 3, wherein thepre-determined coordinate value is an odd number and said calculatingcomprises, when the least significant bit of the integer portion is azero: setting the difference to one plus the fractional portion.
 5. Themethod of claim 3, wherein the predetermined coordinate value is an oddnumber and said calculating comprises, when the least significant bit ofthe integer portion is a zero: setting the difference to one minus thefractional portion.
 6. The method of claim 3, wherein the pre-determinedcoordinate value is an odd number and said calculating comprises, whenthe least significant bit of the integer portion is a one: setting thedifference to the fractional portion.
 7. The method of claim 3, whereinthe pre-determined coordinate value is an odd number and saidcalculating comprises, when the least significant bit of the integerportion is a one: setting the difference to two minus the fractionalportion.
 8. The method of claim 1, further comprising: determining adistance value associated with a distance between a received coordinatelocation and a pre-determined constellation point based at least in parton the difference.
 9. The method of claim 8, further comprising:performing a Trellis decoding process based at least in part on thedistance value.
 10. A method, comprising: receiving an X coordinatevalue associated with a Trellis decoder, the received X coordinate valueincluding an X integer portion and an X fractional portion; setting afirst X difference between the received X coordinate value and a firstpre-determined X coordinate value to one plus the fractional portionwhen the least significant bit of the integer portion is a zero; settinga second X difference between the received X coordinate value and asecond pre-determined X coordinate value to one minus the fractionalportion when the least significant bit of the integer portion is a zero;setting the first X difference between the received X coordinate valueand the first predetermined X coordinate value to the fractional portionwhen the least significant bit of the integer portion is a one; andsetting the second X difference to two minus the fractional portion whenthe least significant bit of the integer portion is a one.
 11. Themethod of claim 10, further comprising: determining a first distancebased on the first X difference and the first Y difference; determininga second distance based on the second X difference and the second Ydifference; and performing a Trellis decoding process based at least inpart on the first and second distance values.
 12. An apparatus,comprising: an input path to receive a coordinate value associated witha Trellis decoder, the received coordinate value including an integerportion and a fractional portion; and a multiplexer to receive (i) thefractional portion, (ii) a the fractional portion plus one, and (iii)the least significant bit of the integer portion as a control signal.13. The apparatus of claim 12, further comprising: a multiplexer toreceive (i) one minus the fractional portion, (ii) two minus thefractional portion, and (iii) the least significant bit of the integerportion as a control signal.
 14. An apparatus, comprising: a storagemedium having stored thereon instructions that when executed by amachine result in the following: receiving a coordinate value associatedwith a Trellis decoder, the received coordinate value including aninteger portion and a fractional portion, evaluating the leastsignificant bit of the integer portion, and calculating a differencebetween the received coordinate value and a pre-determined coordinatevalue based on the fractional portion and said evaluation.
 15. Theapparatus of claim 14, wherein the received coordinate value comprisesone of an X axis value and a Y axis value.
 16. A method, comprising:receiving an X value and a Y value representing differences between areceived location and a pre-determined constellation point associatedwith a Trellis decoder; and estimating a distance between the receivedlocation and the pre-determined constellation point based on one of theX and Y values.
 17. The method of claim 16, wherein said estimatingcomprises: estimating the distance as the X value multiplied by apre-determined value when the X value is larger than the Y value; andestimating the distance as the Y value multiplied by the pre-determinedvalue when the Y value is larger than the X value.
 18. The method ofclaim 17, wherein said estimating when the X value is larger than the Yvalue comprises: left shifting the X value a pre-determined number ofbits; adding (i) the shifted X value to (ii) the X value multiplied by apre-determined constant; and right shifting the result of the addition apre-determined number of bits.
 19. The method of claim 17, wherein saidestimating when the Y value is larger than the X value comprises: leftshifting the Y value a pre-determined number of bits; adding (i) theshifted Y value to (ii) the Y value multiplied by a pre-determinedconstant; and right shifting the result of the addition a pre-determinednumber of bits.
 20. A modem, comprising: an asynchronous digitalsubscriber line data pump, including: an input path to receive acoordinate value associated with a Trellis decoder, the receivedcoordinate value including an integer portion and a fractional portion,and a multiplexer to receive (i) the fractional portion, (ii) a thefractional portion plus one, and (iii) the least significant bit of theinteger portion as a control signal; and an Ethernet interface.
 21. Themodem of claim 20, wherein the data pump further comprises: amultiplexer to receive (i) one minus the fractional portion, (ii) twominus the fractional portion, and (iii) the least significant bit of theinteger portion as a control signal.
 22. A digital subscriber lineaccess multiplexer, comprising: a modem, including: an input path toreceive a coordinate value associated with a Trellis decoder, thereceived coordinate value including an integer portion and a fractionalportion, and a multiplexer to receive (i) the fractional portion, (ii) athe fractional portion plus one, and (iii) the least significant bit ofthe integer portion as a control signal; and an asynchronous transfermode interface.
 23. The digital subscriber line access multiplexer ofclaim 22, wherein the modem further comprises: a multiplexer to receive(i) one minus the fractional portion, (ii) two minus the fractionalportion, and (iii) the least significant bit of the integer portion as acontrol signal.